package foo.bar;

import java.lang.*;
import java.util.*;

class ThreadedExample
{

    public static void printMessage(int message) {
        System.out.println("message: " + message);
    }

    public static void printMessage(long message) {
        System.out.println("message: " + message);
    }

    public static void main(String[] args) {

    // sleep so that stap can start and byteman agent gets installed
    try {
        Thread.sleep(30000);
    } catch(InterruptedException ex) {
        Thread.currentThread().interrupt();
    }


    try {
        String[] inputs = new String[] {"int", "foo", "long"};
        for (String next : inputs) {

            final String arg = next;
            final int i = 42;
            final long j = 987234864;
            Thread thread = new Thread(arg) {
                public void run() {
                    if(arg.equals("int"))
                        printMessage(i);
                    else if(arg.equals("long"))
                         printMessage(j);
                    else
                    System.out.println("Neither of the types");
                }
            };
            thread.start();
            try {
                thread.join();
                } catch (Exception e){}
            }
        } catch (Exception e){}


        // sleep so that stap can finish still while probed java program still runs
        try {
            Thread.sleep(80000);
        } catch(InterruptedException ex) {
            Thread.currentThread().interrupt();
        }
    }
}

